﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using public_dbOpt;

namespace prjEMR22_154
{
    public partial class Pa_Ins_search : Form
    {
        dbOPT dataOpt = new dbOPT();
        public static string strInspectID;
        public static bool sure_check;

        public Pa_Ins_search()
        {
            InitializeComponent();
        }

        private void Pa_Ins_search_Load(object sender, EventArgs e)
        {
            //绑定科室下拉列表
            dataOpt.BindDropdownlist("departinfo", DepartName, 1);

            sure_check = false;
        }

        private void btnFind_Click(object sender, EventArgs e)
        {
            string StrFind = "";    //执行语句
            DataSet ds = new DataSet();//创建数据集

            if (InspectID.Text.Length > 0)
            {
                if (StrFind != "")
                    StrFind = StrFind + String.Format("and InspectID like '%{0}%' ", InspectID.Text);
                else
                    StrFind = StrFind + String.Format("InspectID like '%{0}%' ", InspectID.Text);
            }
            if (DepartName.Text.Length > 0)
            {
                if (StrFind != "")
                    StrFind = StrFind + String.Format("and DepartName like '%{0}%' ", DepartName.Text);
                else
                    StrFind = StrFind + String.Format("DepartName like '%{0}%' ", DepartName.Text);
            }
            if (检查项目.Text.Length > 0)
            {
                if (StrFind != "")
                    StrFind = StrFind + String.Format("and 检查项目 like '%{0}%' ", 检查项目.Text);
                else
                    StrFind = StrFind + String.Format("检查项目 like '%{0}%' ", 检查项目.Text);
            }

            if (InspectID.Text.Length > 0 || DepartName.Text.Length > 0 || 检查项目.Text.Length > 0)  //输入为非空查询
            {
                StrFind = "select * from inspectinfo where " + StrFind + ";";
                ds = dataOpt.BindDataGridView(dgvPatient, StrFind);     //执行查询语句
                if (ds != null && ds.Tables[0].Rows.Count != 0) { }//检查查询结果是否为空，非空则不执行任何操作
                else
                {
                    // 处理没有数据或查询失败的情况  
                    MessageBox.Show("查询为空。");
                }
            }
            else   //空查询，显示表中全部信息
            {
                StrFind = "select * from inspectinfo;";
                dataOpt.BindDataGridView(dgvPatient, StrFind);
            }
        }

        private void dgvPatient_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0) // 确保单击的是数据行，而不是列标题  
            {
                // 确保点击的是有效的单元格  
                if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
                {
                    // 获取点击的单元格所在的行对象  
                    DataGridViewRow row = dgvPatient.Rows[e.RowIndex];

                    // 访问同一行的其他单元格的值  
                    // 假设你有一个名为 "HspID" 的列，并且你想获取这个列的值  
                    strInspectID = row.Cells["InspectID"].Value.ToString();

                    string sql = String.Format("select * from inspectinfo where InspectID = '{0}';", strInspectID);
                    DataSet ds = new DataSet();//创建数据集
                    ds = dataOpt.GetTable(sql);
                    if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                    {
                        // 访问数据集中的数据  
                        DataRow row_1 = ds.Tables[0].Rows[0]; // 获取第一行数据  
                        InitBoxes(splitContainer1.Panel2, row_1);//初始化设置各个控件的初始值
                    }
                    CloseBoxes(splitContainer1.Panel2);
                }
            }
        }
        private void InitBoxes(Control parent, DataRow row)  //初始化设置各个控件的初始值
        {
            foreach (Control ctrl in parent.Controls)
            {
                if (ctrl is TextBox)
                {
                    TextBox textBox = (TextBox)ctrl;
                    string columnName = ctrl.Name;
                    if (ctrl.Name == "InspectID_1")
                    {
                        columnName = "InspectID";
                    }
                    if (ctrl.Name == "检查项目_1")
                    {
                        columnName = "检查项目";
                    }
                    // 检查列是否存在并尝试获取值  
                    if (row.Table.Columns.Contains(columnName))
                    {
                        object value = row[columnName];
                        if (value != DBNull.Value) // 检查值是否为 DBNull  
                        {
                            textBox.Text = value.ToString();
                        }
                    }
                    // 如果列不存在，可以选择记录日志、抛出异常或执行其他操作  
                    // else { /* 处理列不存在的情况 */ }  
                }

                if (ctrl is ComboBox)
                {
                    ComboBox textBox = (ComboBox)ctrl;
                    string columnName = ctrl.Name;
                    if (columnName == "DepartName_1")
                    {
                        columnName = "DepartName";
                    }

                    if (row.Table.Columns.Contains(columnName))
                    {
                        object value = row[columnName];
                        if (value != DBNull.Value) // 检查值是否为 DBNull  
                        {
                            textBox.Text = value.ToString();
                        }
                    }
                    // 如果列不存在，可以选择记录日志、抛出异常或执行其他操作  
                    // else { /* 处理列不存在的情况 */ } 
                }
                // 递归遍历子控件  
                //if (ctrl.Controls.Count > 0)
                //{
                //    InitBoxes(ctrl, row);
                //}
            }

        }
        private void CloseBoxes(Control parent)  //关闭编辑模式函数
        {
            foreach (Control ctrl in parent.Controls)
            {
                if (ctrl is TextBox)
                {
                    TextBox textBox = (TextBox)ctrl;
                    textBox.ReadOnly = true;
                }
                if (ctrl is ComboBox)
                {
                    ComboBox textBox = (ComboBox)ctrl;
                    textBox.Enabled = false;
                }
            }

        }

        private void splitContainer1_Panel1_Paint(object sender, PaintEventArgs e)
        {

        }

        private void 确定使用ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            sure_check = true;
            this.Close();
        }

        private void splitContainer1_Panel2_Paint(object sender, PaintEventArgs e)
        {

        }

    }
}
